//
//  MFSDKManager.h
//  MFZSDK
//
//  Created by cp01 on 17/10/17.
//  Copyright © 2017年 zhangJH. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "MFSDKConfig.h"
#import "MFShareManager.h"

//环境设置
typedef NS_ENUM(NSInteger, MFGAMEENVIRONMENT) {
    MFGAMEENV_HK        = 0,      //港澳台环境
    MFGAMEENV_CHESS,              //棋牌环境
    MFGAMEENV_TW,                 //台湾审核环境
    MFGAMEENV_KO,                 //韩国环境
    MFGAMEENV_WEST,               //欧美环境
    MFGAMEENV_DEBUG,              //内部测试平台
};

//回调名称
#define MFCallBack @"MFCallBackType"
//回调参数
typedef NS_ENUM(NSUInteger, MFCallBackType) {
    login_success           = 0,        //登录成功
    login_fail              = 1,        //登录失败
    accountChange_success   = 2,        //账号切换
    accountChange_fail      = 3,        //账号切换
    bind_success            = 4,        //账号绑定成功
    bind_fail               = 5,        //账号绑定失败
    user_banned             = 6,        //用户被禁用
    applePay_success        = 7,        //支付成功
    applePay_fail           = 8,        //支付失败
    products_price          = 9,        //返回商品价格列表
    receive_messages        = 10,       //客服未读消息数
};

//管理协议类型
typedef enum : NSUInteger {
    Terms,      //服务条款
    Policy,     //隐私政策
    Rules,      //管理规定
} AgreementType;

@interface MFSDKManager : NSObject

//SDK初始化
- (BOOL)MFSDKApplication:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions mfConfig:(MFSDKConfig *)mfConfig;

//魔方SDK初始化 & 静默登录
+ (void)mfinitAndLogin;

//登录账号
+ (void)mfSwitchAccount;

//绑定账号（绑定结果在MFCallBack回调）
+ (void)mfBindAccount;

//绑定手机号（绑定结果在此方法的results内，code：10000 绑定成功，4000 cancel，4001 未登录）
+ (void)mfBindPhoneWithVC:(UIViewController *)vc results:(void(^)(NSDictionary *resultDic))bindCallbcak;


/**
 获取用户游戏内信息
 
 @param uid 用户uid
 @param appName 游戏名城
 @param sid 区服id
 @param sname 区服名称
 @param role 角色名称
 @param isNew 是否是该区服新用户；NO：老用户；YES：新用户
 */
+ (void)mfGetUserUID:(NSString *)uid appName:(NSString *)appName serverId:(NSString *)sid sname:(NSString *)sname role:(NSString *)role isServerNew:(BOOL)isNew;

//获取商品的本地价格
+ (void)getProductLocalPriceWithProductIds:(NSArray *)productIds;

/**
 魔方支付
 
 @param productID 商品ID
 @param producuName 商品名称
 @param productCount 商品数量
 @param productPrice 商品价格
 @param userLevel 用户游戏等级
 @param exInfor 附加信息
 */
+ (void)payWithProductID:(NSString *)productID producuName:(NSString *)producuName productCount:(NSString *)productCount productPrice:(NSString *)productPrice userLevel:(NSInteger)userLevel exInfor:(NSString *)exInfor;


/**
 新手统计
 */
+ (void)newUserEvent;


/**
 自定义事件统计

 @param eventName 事件名
 */
+ (void)logEventsWithEventName:(NSString *)eventName;


/**
 打开用户中心
 */
+ (void)openUserCenter;

/**
 打开客服中心
 */
+ (void)openCustomerServiceCenter;

/**
 打开粉丝页
 */
+ (void)openFanPage;

/**
 用户评价
 */
+ (void)mfUserToAppStoreRateWithResult:(void(^)(id obj))result;

/**
 邀请用户评价弹框

 @param titleStr 标题
 @param desStr 描述文字
 @param submitStr 提交按钮文字
 @param result 用户选择结果
 */
+ (void)mfInviteUsersRateAlertWithTitle:(NSString *)titleStr desString:(NSString *)desStr submitButton:(NSString *)submitStr result:(void(^)(id obj))result;

/**
 打开游戏圈
 */
+ (void)openGameHub;

/// 显示悬浮球
+ (void)showFloatView;

/// 移除悬浮球
+ (void)hideFloatView;

//获取本地IP地址
+ (void)queryLocalCountryWithSuccess:(void(^)(id obj))success fail:(void(^)(NSError *error))fail;

//加载网页
+ (void)mfOpenUrl:(NSString *)urlString;

/// 打开facebook社群页面
/// @param pageId page ID
/// @param pageUrl page URL
+ (BOOL)mfOpenFBPageWithPageID:(NSString *)pageId pageUrl:(NSString *)pageUrl;


/// 打开Discord社群页面（应用外打开链接）
/// @param pageUrl page URL
+ (BOOL)mfOpenPage:(NSString *)pageUrl;

/// 上传email到Google Ads
/// @param emailStr 邮箱
+ (void)updateEmail:(NSString *)emailStr;

/// 显示服务条款，隐私协议，或管理规则
/// @param vc vc
/// @param type 类型：Terms：服务条款；Policy：隐私政策；Rules：管理规定
+ (void)showAgreementWithViewContrller:(UIViewController *)vc type:(AgreementType)type;


+ (BOOL)mfApplication:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options;

/**
 sdk版本
 @return SDK版本号
 */
+ (NSString *)sdkVersion;






@end
